/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is Forte for Java, Community Edition. The Initial * Developer of the Original Code is Sun Microsystems, Inc. Portions * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.apisupport; import java.io.IOException; import java.text.Format; import java.util.*; import org.openide.actions.*; import org.openide.filesystems.*; import org.openide.loaders.*; import org.openide.util.MapFormat; import org.openide.util.SharedClassObject; import org.openide.util.actions.SystemAction; import org.netbeans.modules.xml.XMLDataLoader; public class JavaHelpDataLoader extends UniFileLoader { private static final long serialVersionUID =-7728960313890246535L; public JavaHelpDataLoader() { this (org.netbeans.modules.xml.XMLDataObject.class); } public JavaHelpDataLoader(Class recognizedObject) { super (recognizedObject); } // List of XML file types in use. Each is extension, then public ID, then resource path to DTD. private static final String[][] types = { { "hs", "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN", "org/netbeans/modules/apisupport/resources/helpset_1_0.dtd" }, { "jhm", "-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN", "org/netbeans/modules/apisupport/resources/map_1_0.dtd" }, { "toc", "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN", "org/netbeans/modules/apisupport/resources/toc_1_0.dtd" }, { "idx", "-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN", "org/netbeans/modules/apisupport/resources/index_1_0.dtd" } }; protected void initialize () { setDisplayName ("JavaHelp Files"); ExtensionList extensions = new ExtensionList (); for (int i = 0; i < types.length; i++) extensions.addExtension (types[i][0]); setExtensions (extensions); setActions (((XMLDataLoader) SharedClassObject.findObject (XMLDataLoader.class, true)).getActions ()); ClassLoader loader = getClass ().getClassLoader (); for (int i = 0; i < types.length; i++) org.openide.loaders.XMLDataObject.registerCatalogEntry (types[i][1], types[i][2], loader); } protected MultiDataObject createMultiObject (FileObject primaryFile) throws DataObjectExistsException, IOException { return new org.netbeans.modules.xml.XMLDataObject (primaryFile, this); } protected MultiDataObject.Entry createPrimaryEntry (MultiDataObject mdo, FileObject fo) { return new JavaHelpEntry (mdo, fo); } static class JavaHelpEntry extends FileEntry.Format { private static final long serialVersionUID =2248161434771748311L; public JavaHelpEntry (MultiDataObject mdo, FileObject fo) { super (mdo, fo); } protected java.text.Format createFormat (FileObject target, String name, String ext) { String homeID = target.isRoot () ? "HOMEID" : target.getPackageName ('.') + ".HOMEID"; Map m = new HashMap (); if ("hs".equals (ext)) { m.put ("LIKELY_HOME_ID", homeID); String base; if (name.endsWith ("HelpSet")) base = name.substring (0, name.length () - 7) + "HelpMap"; else base = "Map"; m.put ("LIKELY_MAP_URL_QUOTED", "\"" + base + ".jhm\""); if (name.endsWith ("HelpSet")) base = name.substring (0, name.length () - 7) + "HelpContents"; else base = "Contents"; m.put ("LIKELY_TOC_URL", base + ".toc"); if (name.endsWith ("HelpSet")) base = name.substring (0, name.length () - 7) + "HelpIndex"; else base = "Index"; m.put ("LIKELY_INDEX_URL", base + ".idx"); } else if ("jhm".equals (ext)) { m.put ("LIKELY_HOME_ID_QUOTED", "\"" + homeID + "\""); String base; if (name.endsWith ("HelpMap")) base = name.substring (0, name.length () - 7) + "HelpPage"; else base = "index"; m.put ("LIKELY_HTML_URL_QUOTED", "\"" + base + ".html\""); } MapFormat format = new MapFormat (m); format.setLeftBrace ("__"); format.setRightBrace ("__"); return format; } } } /* * Log * 6 Gandalf-post-FCS1.4.1.0 3/28/00 Jesse Glick SVUIDs. * 5 Gandalf 1.4 12/17/99 Jesse Glick JavaHelp files are now * treated as real XML. * 4 Gandalf 1.3 10/23/99 Ian Formanek NO SEMANTIC CHANGE - Sun * Microsystems Copyright in File Comment * 3 Gandalf 1.2 10/5/99 Jesse Glick Sundry API changes * affecting me. * 2 Gandalf 1.1 9/30/99 Jesse Glick Package rename and misc. * 1 Gandalf 1.0 9/14/99 Jesse Glick * $ */